package com.coszero.utils.utils

import android.content.Context
import android.content.res.Resources
import android.graphics.drawable.Drawable
import androidx.annotation.ArrayRes
import androidx.annotation.ColorRes
import androidx.annotation.DimenRes
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.core.content.ContextCompat
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat

/**
 * Desc： 资源引入工具类,为了提供版本兼容性
 *
 * @author xmqian
 * Email:xmqian93@163.com
 * Date: 2021/8/30 0030
 * @version 3
 */
object ResourceUtils {
    /**
     * 获取颜色色值资源
     *
     * @param context context
     * @param resourceId 资源id
     * @return 返回颜色色值资源
     */
    @JvmStatic
    fun getColor(context: Context, @ColorRes resourceId: Int): Int {
        return ContextCompat.getColor(context, resourceId)
    }

    /**
     * 获取字符串资源
     */
    fun getString(context: Context, @StringRes resourceId: Int): String {
        return context.getResources().getString(resourceId)
    }

    /**
     * 获取字符串数组资源
     *
     * @param resourceId array数组资源id
     */
    fun getStringArray(context: Context, @ArrayRes resourceId: Int): Array<String> {
        return context.getResources().getStringArray(resourceId)
    }

    /**
     * 获取数字数组资源
     *
     * @param resourceId array数组资源id
     */
    fun getIntArray(context: Context, @ArrayRes resourceId: Int): IntArray {
        return context.getResources().getIntArray(resourceId)
    }

    /**
     * 获取字符序列数组资源
     *
     * @param resourceId array数组资源id
     */
    fun getTextArray(context: Context, @ArrayRes resourceId: Int): Array<CharSequence> {
        return context.getResources().getTextArray(resourceId)
    }

    /**
     * 获取资源
     *
     * @param context context
     * @param resourceId drawableId
     * @return return drawable
     */
    fun getDrawble(context: Context, @DrawableRes resourceId: Int): Drawable? {
        return ContextCompat.getDrawable(context, resourceId)
    }

    /**
     * 获取计量数据
     *
     * @param context context
     * @param resourceId dimens资源id
     * @return 返回转换过的数据, 内部有按照屏幕尺寸进行转换
     */
    @JvmStatic
    fun getDimension(context: Context, @DimenRes resourceId: Int): Float {
        return context.getResources().getDimension(resourceId)
    }

    /**
     * 通过资源名称，获取其对应的mipmap ID
     *
     * @param context context
     * @param resourceName 资源名称
     * @return 返回mipmap的资源id
     */
    fun getDrawbleResourceID(
        context: Context,
        resourceName: String?
    ): Int {     //通过资源名称，获取其对应的mipmap ID
        val res: Resources = context.getResources()
        val picid: Int = res.getIdentifier(resourceName, "mipmap", context.getPackageName())
        return picid
    }

    /**
     * 获取矢量图资源
     *
     * @param context context
     * @param resourceId R.drawable.ic_home_black_24dp,矢量图文件资源
     * @param color getResources().getColor(R.color.color_blue)//需要修改的颜色值
     * @Link(https://blog.csdn.net/chenkezhenzhe/article/details/70143859)
     */
    fun getSvgDrawable(context: Context, resourceId: Int, color: Int): Drawable? {
        val vectorDrawableCompat: VectorDrawableCompat? =
            VectorDrawableCompat.create(context.getResources(), resourceId, context.getTheme())
        //你需要改变的颜色
        if (color > 0) {
            vectorDrawableCompat!!.setTint(color)
        }
        return vectorDrawableCompat
    }

    fun getSvgDrawable(context: Context, resourceId: Int): Drawable? {
        return getSvgDrawable(context, resourceId, 0)
    }
}
